const db = require("../db/index");

// 获取文章分类列表数据的处理函数
exports.getArticleCates = (req, res) => {
  // 定义 sql 语句
  // is_delete 为 0 表示没有被 标记为删除 的数据   asc 升序   desc  降序
  const sql = `select * from ev_article_cate where is_delete=0 order by id asc`;
  db.query(sql, (err, results) => {
    if (err) return res.cc(err);
    res.send({ status: 0, message: "获取文章分类列表成功!", data: results });
  });
};

// 新增文章分类的处理函数
exports.addArticleCates = (req, res) => {
  const sql = `select * from ev_article_cate where name=? or alias=? `;
  db.query(sql, [req.body.name, req.body.alias], (err, results) => {
    if (err) return res.cc(err);
    // 输入名称 和别名 ,如果results.length为2,则说明名称和别称都被占用了,但是是每个数据占用一个
    if (results.length > 0) {
      const nameType = results[0].name === req.body.name;
      const aliasType = results[0].alias === req.body.alias;
      if (
        results.length === 2 ||
        (results.length === 1 && nameType && aliasType)
      ) {
        return res.cc("分类名称和分类别称都已被占用,请换一个");
      }

      if (results.length === 1 && nameType) {
        return res.cc("分类名称已被占用,请换一个");
      }
      if (results.length === 1 && aliasType) {
        return res.cc("分类别称已被占用,请换一个");
      }
    }
    //   进行添加
    const sql = `insert into ev_article_cate set ?`;
    db.query(sql, req.body, (err, results) => {
      if (err) return res.cc(err);
      if (results.affectedRows !== 1) {
        return res.cc("添加失败!");
      }
    });
    res.cc("添加文章分类成功!", 0);
  });
};

// 根据id删除文章分类 的处理函数
exports.deleteCateById = (req, res) => {
  const sql = `update ev_article_cate set is_delete=1 where id=?`;
  db.query(sql, req.params.id, (err, results) => {
    if (err) return res.cc(err);
    if (results.affectedRows !== 1) {
      return res.cc("删除文章分类失败!");
    }
    // 删除文章分类成功
    res.cc("删除文章分类成功!", 0);
  });
};
// 根据 Id 获取文章分类的处理函数
exports.getArticleById = (req, res) => {
  const sql = `select * from ev_article_cate where id=?`;
  db.query(sql, req.params.id, (err, results) => {
    if (err) return res.cc(err);
    if (results.length !== 1) {
      return res.cc("未找到该条数据!");
    }
    res.send({ status: 0, message: "获取数据成功!", data: results[0] });
  });
};

// 修改文章分类的处理函数
exports.updateCateById = (req, res) => {
  // 定义查询 分类名称 与 分类别名 是否被占用的 SQL 语句
  //  id<>? 的意思是查询 id 不等于 ?  的数据
  // 意思是查看要修改的那条数据中传入的name 和 alias 和数据库中其他name和alias有没有重复
  const sql = `select * from ev_article_cate where id<>? and (name=? or alias=?)`;
  db.query(
    sql,
    [req.body.id, req.body.name, req.body.alias],
    (err, results) => {
      if (err) return res.cc(err);
      if (results.length > 0) {
        const nameType = results[0].name === req.body.name;
        const aliasType = results[0].alias === req.body.alias;
        if (
          results.length === 2 ||
          (results.length === 1 && nameType && aliasType)
        ) {
          return res.cc("分类名称和分类别称都已被占用,请换一个");
        }

        if (results.length === 1 && nameType) {
          return res.cc("分类名称已被占用,请换一个");
        }
        if (results.length === 1 && aliasType) {
          return res.cc("分类别称已被占用,请换一个");
        }
      }
      // 进行修改
      const sql = `update ev_article_cate set ? where id=?`;
      db.query(sql, [req.body, req.body.id], (err, results) => {
        if (err) return res.cc(err);
        if (results.affectedRows !== 1) {
          return res.cc("修改文章分类数据失败!");
        }
        res.cc("修改文章分类数据成功!", 0);
      });
    }
  );
};
